PHP Composer voor ontwikkeling eigen component
Ook tijdens de ontwikkeling van een eigen project is het handig om met de autoload functionaliteit van Composer te werken.
Stappenplan
- Indien je Composer nog niet hebt geïnstalleerd dan die je dit eerst:
- PHP Composer voor Windows installeren,
- How to Install Composer on Mac OS of How to install Composer on Mac OS. Ik heb gekozen voor de optie Downloading directly from the composer website.
- Om Composer in je project te gaan gebruiken, heb je een composer.json bestand nodig. Dit bestand beschrijft de afhankelijkheden van je project en kan ook andere metadata bevatten. Om een composer.json aan te maken kan gebruik maken van een tool door de
composer init
in de terminal in te typen en uit te voeren (meer info op How to Create composer.json File For PHP Project). - Zorg ervoor dat je de volgende mappenstructuur hebt opgezet:
mappenstructuur Competition project - Je kan je eigen klassen aan de autoloader toevoegen door een veld
autoload
toe te voegen aancomposer.json
. Je verwijst namespaces naar mappen. De src-directory bevindt zich in de hoofdmap van je project, op hetzelfde niveau als de directory van de vendor. We geven op dat de bestanden met de klassen in de namespace ModernWays/Competitie in de map staan met de naam vendor/modernways/competitie/src:{ "name": "modernways/competition", "description": "Competitie bibliotheek", "type": "library", "license": "Modern Ways 2018", "authors": [{ "name": "jefinghelbrecht", "email": "jef.inghelbrecht@telenet.be" }], "require": { "php": ">=5.5.0" }, "autoload": { "psr-4": { "ModernWays\\Competition\\": "vendor/modernways/competition/src/" } } }
- Nadat je het
autoload
-veld hebt toegevoegd, moet je composer dumpautoload uitvoeren om het bestand vendor/autoload.php opnieuw te genereren. - Het autoload_psr4.php bestand in vendor/composer wordt ook bijgewerkt. Vermits de vendor map is toegevoegd aan het pad wordt de
$vendorDir
variabele gebruikt:<?php // autoload_psr4.php @generated by Composer $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( 'ModernWays\\Competition\\' => array($vendorDir . '/modernways/competition/src'), );
- In de index.php pagina laad je de autoloader in:
require __DIR__ . '/vendor/autoload.php';
- Om de modelklassen van
Competition
te gebruiken volstaat het om een instantie van deze klassen te maken. Je hoeft de klassenbestanden niet meer te includen:// instantie creëren van de speler klasse $speler = new \ModernWays\Competition\Model\Speler;
2018-11-04 13:07:04